SELECT (
	SELECT
		'MITSUBISHI' AS VEHICULO1,
		'TOYOTA' AS VEHICULO2,
		'MAZDA' AS VEHICULO3,
		'SENTRA' AS 'VEHICULO4/@MODELO',
		'NISSAN' AS VEHICULO4
	FOR XML PATH ('VEHICULOS'),
	TYPE
), (
	SELECT
		'COCA COLA' AS BEBIDA1,
		'SPRITE' AS BEBIDA2,
		'FRESCA' AS BEBIDA3,
		'FANTA' AS BEBIDA4
	FOR XML PATH ('BEBIDAS'),
	TYPE
)
FOR XML PATH (''),
ROOT ('EJEMPLO_XML')
GO

SET DATEFORMAT YMD

SELECT (
	SELECT
		ID_SOCIO,
		PRIMER_NOMBRE,
		PRIMER_APELLIDO
	FROM
		TABLA_PRUEBA
	WHERE
		FECHA_NACIMIENTO BETWEEN '1986-01-01' AND '1986-12-31'
	FOR XML PATH ('SOCIO_NAC_1986'),
	TYPE
), (
	SELECT
		ID_SOCIO,
		PRIMER_NOMBRE,
		PRIMER_APELLIDO
	FROM
		TABLA_PRUEBA
	WHERE
		FECHA_NACIMIENTO BETWEEN '1992-01-01' AND '1992-12-31'
	FOR XML PATH ('SOCIO_NAC_1992'),
	TYPE
)
FOR XML PATH (''),
ROOT ('DETALLE_SOCIOS')
GO

SELECT (
	SELECT TOP 100
		ID_SOCIO,
		PRIMER_NOMBRE + ' ' + PRIMER_APELLIDO AS NOMBRE,
		PRIMER_APELLIDO,
		FECHA_NACIMIENTO
	FROM
		TABLA_PRUEBA
	FOR XML AUTO, TYPE
).query (
	'<SOCIOS>{
		for $registro in /TABLA_PRUEBA
		return
			<CONTACTO ID="{data($registro/@ID_SOCIO)}" NACIMIENTO="{data($registro/@FECHA_NACIMIENTO)}">{data($registro/@NOMBRE)}</CONTACTO>
	}</SOCIOS>'
)

SELECT (
	SELECT TOP 10
		ID_SOCIO,
		ESTADO,
		PRIMER_NOMBRE,
		PRIMER_APELLIDO,
		TELEFONO
	FROM
		TABLA_PRUEBA
	FOR XML AUTO, TYPE
).query (
	'<RESULTADOS>{
		for $registro in /TABLA_PRUEBA
		let $resultado := fn:contains($registro/@ESTADO, "5")
		let $nombres := fn:concat($registro/@PRIMER_APELLIDO, ", ", $registro/@PRIMER_NOMBRE)
		where $registro/@ID_SOCIO != 10 and not($resultado)
		order by fn:number($registro/@ID_SOCIO) descending
		return
			<DATO SOCIO="{data($registro/@ID_SOCIO)}">{fn:concat($nombres, " (TEL: ", $registro/@TELEFONO), ")"}</DATO>
	}</RESULTADOS>'
)
